package com.itheima.demo04;

import java.io.*;
import java.util.zip.ZipEntry;
import java.util.zip.ZipOutputStream;

public class ZipStreamDemo03 {
    public static void main(String[] args) throws IOException {
        //压缩文件夹
        //创建需要压缩的文件夹对象
        File srcFile = new File("e:\\web-gl");
        //创建父级目录对象
        File parentFile = srcFile.getParentFile();
        //创建存放压缩文件的目录对象
        File destFile = new File(parentFile, srcFile.getName() + ".zip");

        //创建压缩流并传入文件流
        ZipOutputStream zos = new ZipOutputStream(new FileOutputStream(destFile));

        //调用压缩方法
        zip(srcFile, zos,srcFile.getName());

        //释放资源
        zos.close();
    }

    //压缩方法
    public static void zip(File srcFile, ZipOutputStream zos,String name) throws IOException {
        //遍历得到每一个文件
        File[] files = srcFile.listFiles();
        for (File file : files) {
            if (file.isFile()){ //如果是文件 就写入
                ZipEntry zipEntry = new ZipEntry(name + "\\" + file.getName());
                zos.putNextEntry(zipEntry);
                FileInputStream fis = new FileInputStream(file);
                int len;
                while ((len = fis.read()) != -1){
                    zos.write(len);
                }
                fis.close();
                zos.closeEntry();
            }else {
                //文件夹 就递归
                zip(file,zos,name + "\\" + file.getName());
            }
        }
    }
}
